/**
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

{namespace com.google.gerrit.server.mail.template}

/**
 * @param commentFiles
 * @param commentCount
 * @param email
 * @param labels
 * @param patchSet
 * @param patchSetCommentBlocks
 */
{template .CommentHtml}
  {let $commentHeaderStyle kind="css"}
    margin-bottom: 4px;
  {/let}

  {let $blockquoteStyle kind="css"}
    border-left: 1px solid #aaa;
    margin: 10px 0;
    padding: 0 10px;
  {/let}

  {let $ulStyle kind="css"}
    list-style: none;
    padding: 0;
  {/let}

  {let $fileLiStyle kind="css"}
    margin: 0;
    padding: 0;
  {/let}

  {let $commentLiStyle kind="css"}
    margin: 0;
    padding: 0 0 0 16px;
  {/let}

  {let $voteStyle kind="css"}
    border-radius: 3px;
    display: inline-block;
    margin: 0 2px;
    padding: 4px;
  {/let}

  {let $positiveVoteStyle kind="css"}
    {$voteStyle}
    background-color: #d4ffd4;
  {/let}

  {let $negativeVoteStyle kind="css"}
    {$voteStyle}
    background-color: #ffd4d4;
  {/let}

  {let $neutralVoteStyle kind="css"}
    {$voteStyle}
    background-color: #ddd;
  {/let}

  {if $patchSetCommentBlocks}
    {call .WikiFormat}{param content: $patchSetCommentBlocks /}{/call}
  {/if}

  {if length($labels) > 0}
    <p>
      Patch set {$patchSet.patchSetId}:
      {for $label in $labels}
        {if $label.value > 0}
          <span style="{$positiveVoteStyle}">
            {$label.label}{sp}+{$label.value}
          </span>
        {elseif $label.value < 0}
          <span style="{$negativeVoteStyle}">
            {$label.label}{sp}{$label.value}
          </span>
        {else}
          <span style="{$neutralVoteStyle}">
            -{$label.label}
          </span>
        {/if}
      {/for}
    </p>
  {/if}

  {if $email.changeUrl}
    <p>
      {call .ViewChangeButton data="all" /}
    </p>
  {/if}

  {if $commentCount == 1}
    <p>1 comment:</p>
  {elseif $commentCount > 1}
    <p>{$commentCount} comments:</p>
  {/if}

  <ul style="{$ulStyle}">
    {for $group in $commentFiles}
      <li style="{$fileLiStyle}">
        <p>
          <a href="{$group.link}">{$group.title}:</a>
        </p>

        <ul style="{$ulStyle}">
          {for $comment in $group.comments}
            <li style="{$commentLiStyle}">
              {if $comment.isRobotComment}
                <p style="{$commentHeaderStyle}">
                  Robot Comment from{sp}
                  {if $comment.robotUrl}<a href="{$comment.robotUrl}">{/if}
                  {$comment.robotId}
                  {if $comment.robotUrl}</a>{/if}{sp}
                  (run ID {$comment.robotRunId}):
                </p>
              {/if}

              <p style="{$commentHeaderStyle}">
                <a href="{$comment.link}">
                  {if $comment.startLine == 0}
                    Patch Set #{$group.patchSetId}:
                  {else}
                    Patch Set #{$group.patchSetId},{sp}
                    Line {$comment.startLine}:
                  {/if}
                </a>{sp}
                {if length($comment.lines) == 1}
                  <code style="font-family:monospace,monospace">
                    {$comment.lines[0]}
                  </code>
                {/if}
              </p>

              {if length($comment.lines) > 1}
                <p>
                  <blockquote style="{$blockquoteStyle}">
                    {call .Pre}{param content kind="html"}
                      {for $line in $comment.lines}
                        {$line}{\n}
                      {/for}
                    {/param}{/call}
                  </blockquote>
                </p>
              {/if}

              {if $comment.parentMessage}
                <p>
                  <blockquote style="{$blockquoteStyle}">
                    {$comment.parentMessage}
                  </blockquote>
                </p>
              {/if}

              {call .WikiFormat}{param content: $comment.messageBlocks /}{/call}
            </li>
          {/for}
        </ul>
      </li>
    {/for}
  </ul>
{/template}
